﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data;
using F1010DB.SecurityServices;
using F10101CM.Control;
using F1010DB.ScoutMember;
using F1010DB.CustomEntity.Account;
using F1010DB.SearchCommon;
using F1010DB.CustomEntity.InitDanhMuc;
using F1010DB.Constant;

namespace HDVN_F1_101.HDS
{
    public partial class frmChuyenSinhHoat : Form
    {
        private const int DOMESTIC_LOCAL = 1;
        private const int DOMESTIC_LOCAL_IN_PROVINCE = 2;
        private const int DOMESTIC_LOCAL_OUT_PROVINCE = 3;
        private const int FOREGIN_LOCAL = 4;

        private ScoutMemberCommon scoutCommon = null;
        private ScoutMemberServices scoutService = null;
        private PopulateToComboBox popu = null;
        private SearchUnitData getUnitCommon = null;
        private bool isDomestic = true;

        public frmChuyenSinhHoat()
        {
            InitializeComponent();
        }

        private void frmChuyenSinhHoat_Load(object sender, EventArgs e)
        {
            scoutCommon = new ScoutMemberCommon();
            popu = new PopulateToComboBox();

            DataTable dt = scoutCommon.getScoutMemberBasicList(AccountInfo.accountId);

            popu.populateDataToCombobox(dt, "MA_DOAN_SINH", "HO_VA_TEN", cbxChonDoanSinh);

            // Xét trường hợp là đơn vị nội đô cùng ngành
            // Giá trị nội bộ thiết lập ban đầu
            rdNoiBo.Checked = true;
        }

        /// <summary>
        /// Lấy danh sách đơn vị nội bộ
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void rdNoiBo_CheckedChanged(object sender, EventArgs e)
        {
            if(rdNoiBo.Checked == true)
            {
                cbxSelectProvince.Enabled = false;
                getUnitCommon = new SearchUnitData();

                // Xác định loại đơn vị
                // Nếu loại đơn vị là '2' => Liên đoàn thuộc đạo
                // Lấy mã đạo
                DataTable dt = getUnitCommon.getTroopInfo(AccountInfo.maLienDoan);
                DataTable dtLienDoan = null;

                // Nếu đây là đơn vị loại '2'
                if (dt != null)
                {
                    //Lấy mã đạo
                    string district = getUnitCommon.getDistrictId(AccountInfo.maLienDoan);

                    dtLienDoan = getUnitCommon.getTroopByDistrict(district);
                    popu.populateDataToCombobox(dtLienDoan, "MA_DON_VI", "TEN_DON_VI", cbxLienDoan);
                    cbxLienDoan.Enabled = true;
                }
                else
                {
                    /// Nếu liên đoàn thuộc loại 5 (Liên Đoàn Biệt Lập)
                    cbxLienDoan.Enabled = false;

                    DataTable dtUnit = getUnitCommon.getUnitByTroop(AccountInfo.accountId, AccountInfo.levelCode);
                    popu.populateDataToCombobox(dtUnit, "MA_DON_VI", "TEN_DON_VI", cbxDonVi);
                }
                cbxDonVi.Enabled = true;
            }
            else
            {
                cbxLienDoan.Enabled = true;
                cbxDonVi.Enabled = true;
            }
        }


        /// <summary>
        /// Hàm này dùng để xác định rằng có đơn vị khác cùng ngành không
        /// 
        /// 
        /// </summary>
        private void getLocalUnitSameLevel(string maLienDoan)
        {
            DataTable dtDonVi = getUnitCommon.getUnitByTroop(maLienDoan, AccountInfo.levelCode);

            dtDonVi.DefaultView.RowFilter = "MA_DON_VI <> '" + AccountInfo.accountId + "'";
            if (dtDonVi.Rows.Count != 0)
            {
                popu.populateDataToCombobox(dtDonVi, "MA_DON_VI", "TEN_DON_VI", cbxDonVi);
            }
            else
            {
                MessageBox.Show("Hiện tại trong liên đoàn bạn không có đơn vị nào thuộc ngành : " + AccountInfo.level + " ngoài đơn vị mình \n Nên không thực hiện được chuyển nội bộ");
                rdNoiBo.Enabled = false; 
            }
        }

        /// <summary>
        /// Lấy các đơn vị cùng một tỉnh
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void rdNoiTinh_CheckedChanged(object sender, EventArgs e)
        {
            if (rdNoiTinh.Checked == true)
            {
                getUnitCommon = new SearchUnitData();

                DataTable dtLienDoanNoiTinh = getUnitCommon.listTroopByUnit(AccountInfo.location.ToString());
                
                popu.populateDataToCombobox(dtLienDoanNoiTinh, "MA_DON_VI", "TEN_DON_VI", cbxLienDoan);
                cbxLienDoan.Enabled = true;
            }
            else
            {
                cbxLienDoan.Enabled = false;
            }
        }

        /// <summary>
        /// Các đơn vị ngoại tỉnh
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void rdNgoaiTinh_CheckedChanged(object sender, EventArgs e)
        {
            if (rdNgoaiTinh.Checked == true)
            {

                cbxSelectProvince.Enabled = true;
                popu.populateDataToComboBoxCombineValueAndCaption(InitDisplayLoad.listDanhMuc[TableNameList.TABLE_DANH_MUC_TINH_THANH], "MA_TINH_THANH", "TEN_TINH_THANH", cbxSelectProvince);
                cbxSelectProvince.SelectedIndex = 0;
            }
            else
            {
                cbxSelectProvince.Enabled = false;
                cbxSelectProvince.Items.Clear();
            }
        }

        private void cbxSelectProvince_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (rdNgoaiTinh.Enabled == true)
            {
                string[] s = F10101CM.Common.CovertCommon.splitCodeAndName(cbxSelectProvince.Text, '.');
                string sProvinceValue = s[0];

                getUnitCommon = new SearchUnitData();

                DataTable dtLienDoanNgoaiTinh = getUnitCommon.listTroopByUnit(sProvinceValue);

                popu.populateDataToCombobox(dtLienDoanNgoaiTinh, "MA_DON_VI", "TEN_DON_VI", cbxLienDoan);
            }
        }

        private void cbxLienDoan_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (AccountInfo.capDonVi.Equals("2") || rdNgoaiTinh.Checked == true || rdNoiTinh.Checked == true)
            {
                getUnitCommon = new SearchUnitData();

                var selectLienDoan = cbxLienDoan.SelectedValue;
                string sLienDoanValue = selectLienDoan.ToString();

                DataTable unit = getUnitCommon.getUnitByTroop(sLienDoanValue, AccountInfo.levelCode);

                popu.populateDataToCombobox(unit, "MA_DON_VI", "TEN_DON_VI", cbxDonVi);
            }
        }

        private void rdKhongDanhBo_CheckedChanged(object sender, EventArgs e)
        {
            if (rdKhongDanhBo.Checked == true)
            {
                txtFreeDonVi.Enabled = true;
                txtFreeLienDoan.Enabled = true;
                cbxSelectProvince.Enabled = false;
                cbxLienDoan.Enabled = false;
                cbxDonVi.Enabled = false;
            }

            else

            {
                txtFreeDonVi.Enabled = false;
                txtFreeLienDoan.Enabled = false;
                cbxDonVi.Enabled = true;
            }
        }

        private void rdLanhTho_CheckedChanged(object sender, EventArgs e)
        {
            if (rdLanhTho.Checked==true)
            {
                txtQuocGia.Enabled = true;
                groupBox3.Enabled = false;
            }
            else
            {
                txtQuocGia.Enabled = false;
                groupBox3.Enabled = true;
                txtQuocGia.Text = "VIỆT NAM";
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}
